import pandas as pd

s1 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s1)

s2 = pd.Series([2, 3, 4], index=['a', 'b', 'c'])
print(s2)

print(s1 + s2)  # 同索引的元素相加

"""
1、Series重新设置索引
"""
# 重新设置索引
s = pd.Series([11, 22, 33], index=[1, 2, 3])
print(s)
print(s.reindex(range(1, 6)))  # 多出来两个为NaN

# 使用0进行填充
print(s.reindex(range(1, 6), fill_value=0))

# 向前填充和向后填充
print(s.reindex(range(1, 6), method='ffill'))  # 向前填充，出现NaN时，和前一个索引的值保持一致
print(s.reindex(range(1, 6), method='bfill'))  # 向后填充，出现NaN时，和后一个索引的值保持一致

"""
2、DataFrame对象重新设置索引
"""
data = [[90, 100, 90], [100, 39, 89], [49, 79, 87]]
index = ['msb1001', 'msb1002', 'msb1003']
columns = ['数学', '语文', '英语']

pd.set_option('display.unicode.east_asian.width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)

# 重新设置行索引
print(df.reindex(['msb1001', 'msb1002', 'msb1003', 'msb1004', 'msb1005']))

# 重新设置列索引
print(df.reindex(columns=['数学', '语文', '英语', '政治', '历史']))

# 同时设置行索引和列索引
print(df.reindex(index=['msb1001', 'msb1002', 'msb1003', 'msb1004', 'msb1005', 'msb1006'],
                 columns=['数学', '语文', '英语', '政治', '历史', '地理'],fill_value=0))

"""
3、设置某列为行索引
"""
# 显示完整数据
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 1000)

excel = pd.read_excel('resources/msb课程记录.xls')
print(excel)

excel = excel.set_index(['买家会员名']) # 以'买家会员名'为列索引
print(excel)

"""
4、数据清洗之后，设置连续的索引
"""
excel = pd.read_excel('resources/msb课程记录.xls')
print(excel.dropna()) # 清理NaN数据
print(excel.dropna().reset_index(drop=True)) # 重新设置索引
